#ifndef IMAGESMODEL_H
#define IMAGESMODEL_H

#include <QAbstractItemModel>
#include <QStringList>

/** Данные галереи — список изображений.
 *
 * @author Василий Почкаенко
 */
class ImagesModel : public QAbstractItemModel{
Q_OBJECT
private:
	/** Список путей к файлам галереи.*/
	QStringList pathList;
public:
	explicit ImagesModel(QObject *parent = 0);

	/** Используется другими компонентами для получения информации о каждом элементе, предоставляемом моделью.*/
	virtual Qt::ItemFlags flags( const QModelIndex & index ) const;

	/** Снабжает представления и делегаты данными элементов.*/
	virtual QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const;

	/** Предоставляется представлениям с информацией для показа в их заголовках..*/
	virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;

	/** Количество строк данных, доступных в модели.*/
	virtual int rowCount( const QModelIndex & parent = QModelIndex() ) const;

	/** Количество столбцов данных, доступных в модели.*/
	virtual int columnCount( const QModelIndex & parent = QModelIndex() ) const;

	/** Добавляет новую строку.*/
	virtual bool insertRow( int row, const QString & fileName);

	/** Удаляет строки.*/
	virtual bool removeRows( int row, int count);

	/** Удаляет строку.*/
	virtual bool removeRow( int row);

	/** Получая модельный индекс родительского элемента, эта функция позволяет представлениям и делегатам обращаться к дочерним элементам этого элемента.*/
	virtual QModelIndex index( int row, int column, const QModelIndex & parent = QModelIndex() ) const;

	/** Возвращает модельный индекс, соответствующий родителю какого-либо дочернего элемента..*/
	QModelIndex parent( const QModelIndex & index ) const;

signals:

public slots:
	/** Сохранить галерею.
	 *
	 * @param fileName имя файла галереи.
	 */
	void save(const QString & fileName);

	/** Открыть галерею.
	 *
	 * @param fileName имя файла галереи.
	 */
	void open(const QString & fileName);

	/** Удалить временную папку.*/
	void close();

};

#endif // IMAGESMODEL_H
